#ifndef _RAY_TRACING_H_
#define _RAY_TRACING_H_

#include "sdl_surface.h"
#include "sdl_event.h"
#include "sdl_exception.h"
#include "scene.h"
#include "trace_camera.h"
#include "light.h"


class RayTracing
	: public sdl::SurfaceListener
	, public sdl::EventListener
{
public:
	RayTracing() throw (sdl::Exception);

private:
	// Callback methods
	void on(sdl::SurfaceListener::Update, sdl::Surface*) throw();
	void on(sdl::EventListener::NewEvent, const SDL_Event*) throw();

	Scene _scene;
	TraceCamera _camera;
	Light _light;
};

#endif // _RAY_TRACING_H_
